package main

import (
	"fmt"
	"strconv"
)

type StructA struct {
	ID   int
	Name string
	age  int
}
type StructB struct {
	ID   int
	Name string
	age  *int
}

// struct可以直接比较 - 因为值类型
func main() {
	d1 := StructA{1, "aaa", 18}
	d2 := StructA{1, "aaa", 18}
	fmt.Println(d1 == d2) //true

	age1 := new(int)
	age2 := new(int)
	d3 := StructB{1, "aaa", age1}
	d4 := StructB{1, "aaa", age1}
	d5 := StructB{1, "aaa", age2}
	fmt.Println(d3 == d4) //true
	fmt.Println(d3 == d5) //false

	fmt.Println("string compare..")
	s1 := "aaa"
	s2 := "aaa"
	fmt.Println(s1 == s2)           //true
	fmt.Println(s1 == "aaa")        //true
	fmt.Println(s1 == ("aa" + "a")) //true
	fmt.Println(s1 == (sss("aaa"))) //true
}

func sss(s string) string {
	var a int64 = 10
	r := strconv.AppendInt([]byte(s), a, 10)
	_ = r
	return s + ""
}
